using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._UtilityNetworkTools._Administration
{
    /// <summary>
    /// <para>Set Subnetwork Definition</para>
    /// <para>Sets the domain network tier's properties for a subnetwork in a utility network.</para>
    /// <para>设置公共设施网络中子网的域网络层属性。</para>
    /// </summary>    
    [DisplayName("Set Subnetwork Definition")]
    public class SetSubnetworkDefinition : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SetSubnetworkDefinition()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_utility_network">
        /// <para>Input Utility Network</para>
        /// <para>The input utility network that contains the tier's subnetwork.</para>
        /// <para>包含层子网的输入公共设施网络。</para>
        /// </param>
        /// <param name="_domain_network">
        /// <para>Domain Network</para>
        /// <para>The domain network that contains the tier.</para>
        /// <para>包含层的域网络。</para>
        /// </param>
        /// <param name="_tier_name">
        /// <para>Tier Name</para>
        /// <para>The name of the tier that contains the subnetwork.</para>
        /// <para>包含子网的层的名称。</para>
        /// </param>
        /// <param name="_support_disjoint_subnetwork">
        /// <para>Support Disjoint Subnetwork</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the input tier supports disjoint subnetworks. Disjoint subnetworks are two or more subnetworks that belong to the same tier and have the same subnetwork name but are not traversable. This option is only available for tiers in domain networks with a partitioned tier definition. Tiers in a domain network with a hierarchical tier definition always have this tier property checked to support disjoint subnetworks.
        ///   <bulletList>
        ///     <bullet_item>Checked—The input tier supports disjoint subnetworks.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The input tier does not support disjoint subnetworks. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定输入层是否支持不相交子网。不相交子网是属于同一层且具有相同子网名称但不可遍历的两个或多个子网。此选项仅适用于具有分区层定义的域网络中的层。具有分层层定义的域网络中的层始终选中此层属性以支持不相交的子网。
        ///   <bulletList>
        ///     <bullet_item>选中 - 输入层支持不相交子网。</bullet_item><para/>
        ///     <bullet_item>未选中 - 输入层不支持不相交的子网。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        public SetSubnetworkDefinition(object _in_utility_network, object _domain_network, object _tier_name, _support_disjoint_subnetwork_value _support_disjoint_subnetwork)
        {
            this._in_utility_network = _in_utility_network;
            this._domain_network = _domain_network;
            this._tier_name = _tier_name;
            this._support_disjoint_subnetwork = _support_disjoint_subnetwork;
        }
        public override string ToolboxName => "Utility Network Tools";

        public override string ToolName => "Set Subnetwork Definition";

        public override string CallName => "un.SetSubnetworkDefinition";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_utility_network, _domain_network, _tier_name, _support_disjoint_subnetwork.GetGPValue(), _valid_devices, _valid_subnetwork_controller, _valid_lines, _aggregated_line, _diagram_template, _summaries, _condition_barriers, _function_barriers, _include_barriers.GetGPValue(), _traversability_scope.GetGPValue(), _propagators, _out_utility_network, _update_structure_features.GetGPValue(), _update_container_features.GetGPValue(), _edit_mode_for_default_version.GetGPValue(), _edit_mode_for_named_version.GetGPValue(), _valid_junctions, _valid_junction_objects, _valid_junction_object_subnetwork_controller, _valid_edge_objects, _manage_subnetwork_isdirty.GetGPValue(), _include_containers.GetGPValue(), _include_content.GetGPValue(), _include_structures.GetGPValue(), _validate_locatability.GetGPValue()];

        /// <summary>
        /// <para>Input Utility Network</para>
        /// <para>The input utility network that contains the tier's subnetwork.</para>
        /// <para>包含层子网的输入公共设施网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Utility Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_utility_network { get; set; }


        /// <summary>
        /// <para>Domain Network</para>
        /// <para>The domain network that contains the tier.</para>
        /// <para>包含层的域网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Domain Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _domain_network { get; set; }


        /// <summary>
        /// <para>Tier Name</para>
        /// <para>The name of the tier that contains the subnetwork.</para>
        /// <para>包含子网的层的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tier Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _tier_name { get; set; }


        /// <summary>
        /// <para>Support Disjoint Subnetwork</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the input tier supports disjoint subnetworks. Disjoint subnetworks are two or more subnetworks that belong to the same tier and have the same subnetwork name but are not traversable. This option is only available for tiers in domain networks with a partitioned tier definition. Tiers in a domain network with a hierarchical tier definition always have this tier property checked to support disjoint subnetworks.
        ///   <bulletList>
        ///     <bullet_item>Checked—The input tier supports disjoint subnetworks.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The input tier does not support disjoint subnetworks. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定输入层是否支持不相交子网。不相交子网是属于同一层且具有相同子网名称但不可遍历的两个或多个子网。此选项仅适用于具有分区层定义的域网络中的层。具有分层层定义的域网络中的层始终选中此层属性以支持不相交的子网。
        ///   <bulletList>
        ///     <bullet_item>选中 - 输入层支持不相交子网。</bullet_item><para/>
        ///     <bullet_item>未选中 - 输入层不支持不相交的子网。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Support Disjoint Subnetwork")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _support_disjoint_subnetwork_value _support_disjoint_subnetwork { get; set; }

        public enum _support_disjoint_subnetwork_value
        {
            /// <summary>
            /// <para>SUPPORT_DISJOINT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SUPPORT_DISJOINT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DISJOINT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DISJOINT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Valid Devices</para>
        /// <para>The asset group/asset type pairs identified as valid devices for the subnetwork.</para>
        /// <para>标识为子网有效设备的资产组/资产类型对。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Devices")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_devices { get; set; } = null;


        /// <summary>
        /// <para>Valid Device Subnetwork Controllers</para>
        /// <para>The asset group/asset type pairs identified as valid device subnetwork controllers in the subnetwork.</para>
        /// <para>在子网中标识为有效设备子网控制器的资产组/资产类型对。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Device Subnetwork Controllers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_subnetwork_controller { get; set; } = null;


        /// <summary>
        /// <para>Valid Lines</para>
        /// <para>The asset group/asset type pairs identified as valid lines for the subnetwork.</para>
        /// <para>标识为子网有效线的资产组/资产类型对。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Lines")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_lines { get; set; } = null;


        /// <summary>
        /// <para>Aggregated Lines For SubnetLine Feature Class</para>
        /// <para>The valid lines with geometry that will be aggregated to generate the SubnetLine features. This list is a subset of the values specified in the Valid Lines parameter.</para>
        /// <para>具有几何的有效线，将聚合这些几何以生成 SubnetLine 要素。此列表是 Valid Lines 参数中指定的值的子集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Aggregated Lines For SubnetLine Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _aggregated_line { get; set; } = null;


        /// <summary>
        /// <para>Subnetwork Diagram Templates</para>
        /// <para>The templates that will be used to generate subnetwork system diagrams for each subnetwork.</para>
        /// <para>将用于为每个子网生成子网系统逻辑示意图的模板。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Subnetwork Diagram Templates")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _diagram_template { get; set; } = null;


        /// <summary>
        /// <para>Summaries</para>
        /// <para><xdoc>
        ///   <para>Sets the summary attribute field to store function results when inserting or updating SubnetLine features.</para>
        ///   <para>Summaries components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Filter Name—Filter the function results by attribute name.  </bullet_item><para/>
        ///     <bullet_item>Filter Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Filter Type—Choose from a number of filter types.  </bullet_item><para/>
        ///     <bullet_item>Filter Value—Provide a specific value for the input filter attribute.  </bullet_item><para/>
        ///     <bullet_item>Summary Attribute—The field in the SubnetLine feature class that will persist the function result. Depending on the selected function and network attribute type, only the applicable type of user-added subnetwork attributes will be valid for this parameter. If a field to store the summary result does not exist in the SubnetLine feature class, the Add Field tool can be used to create one. A field can only support the result of one summary; therefore, each summary requires its own field in the SubnetLine feature class. See the following matrix of valid field types for the various functions:  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The summaries Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values.  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the input values.
        ///       <para>Subnetwork controllers and loops trace types do not support the subtract function.    </para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, the starting point feature has a value of 20. The next feature has a value of 30. If you use the minimum function, the result is 20, maximum is 30, add is 50, average is 25, count is 2, and subtract is -10.</para>
        ///   <para>The summaries Filter Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The summaries Filter Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>设置摘要属性字段，以便在插入或更新 SubnetLine 要素时存储函数结果。</para>
        /// <para>摘要组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>过滤器名称 （Filter Name） - 按属性名称过滤函数结果。</bullet_item><para/>
        ///     <bullet_item>过滤器运算符 （Filter Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>过滤器类型 （Filter Type） - 从多种过滤器类型中进行选择。</bullet_item><para/>
        ///     <bullet_item>过滤器值 （Filter Value） - 为输入过滤器属性提供特定值。</bullet_item><para/>
        ///     <bullet_item>摘要属性 - SubnetLine 要素类中将保留函数结果的字段。根据所选函数和网络属性类型，只有用户添加的子网属性的适用类型对此参数有效。如果 SubnetLine 要素类中不存在用于存储汇总结果的字段，则可以使用添加字段工具创建一个字段。一个字段只能支持一个摘要的结果;因此，每个摘要都需要在 SubnetLine 要素类中具有自己的字段。请参阅以下各种函数的有效字段类型矩阵： </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>摘要函数值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>添加 - 输入值的总和。</bullet_item><para/>
        ///     <bullet_item>平均值 - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        /// <bullet_item>减法 - 输入值之间的差值。
        ///       <para>子网控制器和环路追踪类型不支持减法函数。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20，最大值为 30，加法为 50，平均值为 25，count 为 2，减法为 -10。</para>
        /// <para>摘要 Filter Operator 值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>摘要筛选器类型值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Summaries")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _summaries { get; set; } = null;


        /// <summary>
        /// <para>Condition Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier condition on features based on a comparison to a network attribute or check for a category string. A condition barrier uses a network attribute, an operator and a type, and an attribute value. For example, stop a trace when a feature has the Device Status attribute equal to the specific value of Open. When a feature meets this condition, the trace stops. If you're using more than one attribute, you can use the Combine using parameter to define an And or an Or condition.</para>
        ///   <para>Condition barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the Name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine using—Set this value if you have multiple attributes to add. You can combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barriersType value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>根据与网络属性的比较或检查类别字符串，对要素设置可穿越性屏障条件。条件屏障使用网络属性、运算符和类型以及属性值。例如，当功能的“设备状态”属性等于特定值“打开”时，停止跟踪。当要素满足此条件时，跟踪将停止。如果要使用多个属性，则可以使用“组合使用”参数来定义“和”或“条件。</para>
        /// <para>条件屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 （Name） - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从名称参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>组合使用- 如果要添加多个属性，请设置此值。您可以使用 And 或 Or 条件将它们组合在一起。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>条件障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>条件 barriersType 值选项如下所示：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Condition Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _condition_barriers { get; set; } = null;


        /// <summary>
        /// <para>Function Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier on features based on a function. Function barriers can be used to do such things as restrict how far the trace travels from the starting point, or set a maximum value to stop a trace. For example, the length of each line traveled is added to the total distance traveled so far. When the total length traveled reaches the value specified, the trace stops.</para>
        ///   <para>Function barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that, if discovered, will cause the termination.  </bullet_item><para/>
        ///     <bullet_item>Use Local Values—Calculate values in each direction as opposed to an overall global value, for example, a function barrier that is calculating the sum of Shape length in which the trace terminates if the value is greater than or equal to 4. In the global case, after you have traversed two edges with a value of 2, you have already reached a Shape length sum of 4, so the trace stops. If local values are used, the local values along each path change, and the trace continues.
        ///       <bulletList>
        ///         <bullet_item>Checked—Local values will be used.      </bullet_item><para/>
        ///         <bullet_item>Unchecked—Global values will be used. This is the default.      </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The function barrier Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values.  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the input values.
        ///       <para>Subnetwork controllers and loops trace types do not support the subtract function.    </para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, the starting point feature has a value of 20. The next feature has a value of 30. If you use the minimum function, the result is 20, maximum is 30, add is 50, average is 25, count is 2, and subtract is -10.</para>
        ///   <para>The function barrier Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在基于函数的要素上设置可遍历性障碍。功能屏障可用于执行诸如限制跟踪从起点行进的距离或设置停止跟踪的最大值等操作。例如，每条行进线的长度将添加到到目前为止的总行进距离中。当行进的总长度达到指定的值时，迹线将停止。</para>
        /// <para>功能屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 为输入属性类型提供特定值，如果发现该值将导致终止。</bullet_item><para/>
        /// <bullet_item>使用局部值 （Use Local Values） - 计算每个方向上的值，而不是整体全局值，例如，函数屏障，用于计算形状长度之和，如果该值大于或等于 4，则追踪将在其中终止。在全局情况下，在遍历值为 2 的两条边后，已达到 Shape 长度总和为 4，因此迹线停止。如果使用局部值，则沿每个路径的局部值将更改，并且跟踪将继续。
        ///       <bulletList>
        ///         <bullet_item>选中 - 将使用本地值。</bullet_item><para/>
        ///         <bullet_item>未选中—将使用全局值。这是默认设置。     </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>功能屏障 函数值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>添加 - 输入值的总和。</bullet_item><para/>
        ///     <bullet_item>平均值 - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        /// <bullet_item>减法 - 输入值之间的差值。
        ///       <para>子网控制器和环路追踪类型不支持减法函数。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20，最大值为 30，加法为 50，平均值为 25，count 为 2，减法为 -10。</para>
        /// <para>功能障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Function Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _function_barriers { get; set; } = null;


        /// <summary>
        /// <para>Include Barrier Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the traversability barrier features will be included in the trace results. Traversability barriers are optional even if they have been preset in the subnetwork definition. This parameter does not apply to device features with terminals.
        ///   <bulletList>
        ///     <bullet_item>Checked—Traversability barrier features will be included in the trace results. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Traversability barrier features will not be included in the trace results.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定追踪结果中是否包括可遍历性障碍要素。可遍历性障碍是可选的，即使它们已在子网定义中预设。此参数不适用于带终端的设备功能。
        ///   <bulletList>
        ///     <bullet_item>选中 - 可穿越性障碍要素将包含在追踪结果中。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括可穿越性障碍要素。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Barrier Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_barriers_value _include_barriers { get; set; } = _include_barriers_value._true;

        public enum _include_barriers_value
        {
            /// <summary>
            /// <para>INCLUDE_BARRIERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_BARRIERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_BARRIERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_BARRIERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Apply Traversability To</para>
        /// <para><xdoc>
        ///   <para>The type of traversability to enforce. Traversability scope dictates whether traversability is enforced at junctions, edges, or both. For example, if a condition barrier is defined to stop the trace if Device Status is equal to Open and traversability scope is set to edges only, the trace will not stop—even if it encounters an open device—because Device Status is only applicable to junctions. In other words, this parameter indicates to the trace whether to ignore junctions, edges, or both.
        ///   <bulletList>
        ///     <bullet_item>Both junctions and edges—Traversability will be applied to both junctions and edges.  </bullet_item><para/>
        ///     <bullet_item>Junctions only—Traversability will be applied to junctions only.  </bullet_item><para/>
        ///     <bullet_item>Edges only—Traversability will be applied to edges only.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>要强制执行的可遍历性类型。可遍历性范围决定了是在交汇点和/或边强制实施遍历性。例如，如果将条件屏障定义为在“设备状态”等于“打开”且“可遍历性范围”设置为“仅边缘”时停止跟踪，则跟踪不会停止（即使遇到打开的设备），因为“设备状态”仅适用于交汇点。换言之，此参数向迹线指示是忽略交汇点和/或边。
        ///   <bulletList>
        ///     <bullet_item>交汇点和边 - 可穿越性将应用于交汇点和边。</bullet_item><para/>
        ///     <bullet_item>仅限交汇点—可穿越性将仅应用于交汇点。</bullet_item><para/>
        ///     <bullet_item>仅边—可遍历性将仅应用于边。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply Traversability To")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _traversability_scope_value _traversability_scope { get; set; } = _traversability_scope_value._BOTH_JUNCTIONS_AND_EDGES;

        public enum _traversability_scope_value
        {
            /// <summary>
            /// <para>Both junctions and edges</para>
            /// <para>Both junctions and edges—Traversability will be applied to both junctions and edges.  </para>
            /// <para>交汇点和边 - 可穿越性将应用于交汇点和边。</para>
            /// </summary>
            [Description("Both junctions and edges")]
            [GPEnumValue("BOTH_JUNCTIONS_AND_EDGES")]
            _BOTH_JUNCTIONS_AND_EDGES,

            /// <summary>
            /// <para>Junctions only</para>
            /// <para>Junctions only—Traversability will be applied to junctions only.  </para>
            /// <para>仅限交汇点—可穿越性将仅应用于交汇点。</para>
            /// </summary>
            [Description("Junctions only")]
            [GPEnumValue("JUNCTIONS_ONLY")]
            _JUNCTIONS_ONLY,

            /// <summary>
            /// <para>Edges only</para>
            /// <para>Edges only—Traversability will be applied to edges only.  </para>
            /// <para>仅边—可遍历性将仅应用于边。</para>
            /// </summary>
            [Description("Edges only")]
            [GPEnumValue("EDGES_ONLY")]
            _EDGES_ONLY,

        }

        /// <summary>
        /// <para>Propagators</para>
        /// <para><xdoc>
        ///   <para>Specifies the network attributes to propagate as well as how that propagation will occur during a trace. Propagated class attributes denote the key values on subnetwork controllers that are disseminated to the rest of the features in the subnetwork. For example, in an electric distribution model, you can propagate the phase value.</para>
        ///   <para>Propagators components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Substitution Attribute—Use a substituted value instead of bitset network attribute values. Substitutions are encoded based on the number of bits in the network attribute being propagated. A substitution is a mapping of each bit in a phase to another bit. For example, for Phase AC, one substitution could map bit A to B and bit C to null. In this example the substitution for 1010 (Phase AC) is 0000-0010-0000-0000 (512). The substitution captures the mapping so you know that Phase A was mapped to B and Phase C was mapped to null and not the other way around (that is, Phase A was not mapped to null and Phase C was not mapped to B).  </bullet_item><para/>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Propagated Attribute—The name of the field in the network class that is used to store the calculated propagated values. The field type should be the same as the field type of the network attribute chosen for the Attribute value.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The propagators function value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND—Compare the values from one feature to the next.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN—Get the minimum value.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX—Get the maximum value.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The propagators operator value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO—The attribute is equal to the value.</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL—The attribute is not equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN—The attribute is greater than the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO—The attribute is greater than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN—The attribute is less than the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO—The attribute is less than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要传播的网络属性以及该传播在追踪期间的发生方式。传播的类属性表示子网控制器上的键值，这些键值将传播到子网中的其余要素。例如，在配电模型中，可以传播相位值。</para>
        /// <para>传播器组件如下：
        ///   <bulletList>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>替换属性 - 使用替换值而不是位集网络属性值。替换是根据正在传播的网络属性中的位数进行编码的。替换是将相位中的每个位映射到另一个位。例如，对于相位 AC，一个替换可以将位 A 映射到 B，将位 C 映射到 null。在此示例中，1010（相位 AC）的替换为 0000-0010-0000-0000 （512）。替换捕获映射，因此您知道阶段 A 映射到 B，阶段 C 映射到 null，而不是相反（即阶段 A 未映射到 null，阶段 C 未映射到 B）。 </bullet_item><para/>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>传播属性 - 网络类中用于存储计算传播值的字段的名称。字段类型应与为属性值选择的网络属性的字段类型相同。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>传播器函数值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND - 将一个要素的值与下一个要素的值进行比较。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN - 获取最小值。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX - 获取最大值。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>传播器运算符值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO - 属性等于值。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN - 属性大于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO - 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN - 属性小于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO - 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY - 按位 AND 操作，其中属性中至少存在值中的一位 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Propagators")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _propagators { get; set; } = null;


        /// <summary>
        /// <para>Updated Utility Network</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Utility Network")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_utility_network { get; set; }


        /// <summary>
        /// <para>Update Structure Network Containers</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the update subnetwork process will update the supported subnetwork name attribute for structure network containers.
        ///   <bulletList>
        ///     <bullet_item>Checked—The structure network containers will be updated. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The structure network containers will not be updated.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定更新子网进程是否将更新结构网络容器支持的子网名称属性。
        ///   <bulletList>
        ///     <bullet_item>选中 - 将更新结构网络容器。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 不会更新结构网络容器。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Structure Network Containers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_structure_features_value _update_structure_features { get; set; } = _update_structure_features_value._true;

        public enum _update_structure_features_value
        {
            /// <summary>
            /// <para>UPDATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NOT_UPDATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NOT_UPDATE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Update Domain Network Containers</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the update subnetwork process will update the supported subnetwork name for domain network containers.
        ///   <bulletList>
        ///     <bullet_item>Checked—The domain network containers will be updated. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The domain network containers will not be updated.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定更新子网进程是否将更新域网络容器支持的子网名称。
        ///   <bulletList>
        ///     <bullet_item>选中 - 将更新域网络容器。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 不会更新域网络容器。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Domain Network Containers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_container_features_value _update_container_features { get; set; } = _update_container_features_value._true;

        public enum _update_container_features_value
        {
            /// <summary>
            /// <para>UPDATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NOT_UPDATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NOT_UPDATE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Edit Mode For Default Version</para>
        /// <para><xdoc>
        ///   <para>Specifies the edit mode for subnetwork updates on the default version and with file geodatabases.</para>
        ///   <bulletList>
        ///     <bullet_item>Without eventing—Eventing will not be used for subnetwork updates on the default version and in a file geodatabase. This edit mode updates the subnetwork name and propagated values in place. This is the default.</bullet_item><para/>
        ///     <bullet_item>With eventing—Eventing will be used for subnetwork updates on the default version and in a file geodatabase. This edit mode executes geodatabase behavior (for example, attribute rules, editor tracking, and so on) when the subnetwork is updated and updates the subnetwork name and propagated values for all applicable features and objects.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定默认版本和文件地理数据库的子网更新的编辑模式。</para>
        ///   <bulletList>
        ///     <bullet_item>不进行事件处理 - 事件处理将不用于默认版本和文件地理数据库中的子网更新。此编辑模式将就地更新子网名称和传播值。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>使用事件 - 事件将用于默认版本和文件地理数据库中的子网更新。此编辑模式将在更新子网时执行地理数据库行为（例如，属性规则、编辑者追踪等），并更新所有适用要素和对象的子网名称和传播值。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Edit Mode For Default Version")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _edit_mode_for_default_version_value _edit_mode_for_default_version { get; set; } = _edit_mode_for_default_version_value._WITHOUT_EVENTING;

        public enum _edit_mode_for_default_version_value
        {
            /// <summary>
            /// <para>Without eventing</para>
            /// <para>Without eventing—Eventing will not be used for subnetwork updates on the default version and in a file geodatabase. This edit mode updates the subnetwork name and propagated values in place. This is the default.</para>
            /// <para>不进行事件处理 - 事件处理将不用于默认版本和文件地理数据库中的子网更新。此编辑模式将就地更新子网名称和传播值。这是默认设置。</para>
            /// </summary>
            [Description("Without eventing")]
            [GPEnumValue("WITHOUT_EVENTING")]
            _WITHOUT_EVENTING,

            /// <summary>
            /// <para>With eventing</para>
            /// <para>With eventing—Eventing will be used for subnetwork updates on the default version and in a file geodatabase. This edit mode executes geodatabase behavior (for example, attribute rules, editor tracking, and so on) when the subnetwork is updated and updates the subnetwork name and propagated values for all applicable features and objects.</para>
            /// <para>使用事件 - 事件将用于默认版本和文件地理数据库中的子网更新。此编辑模式将在更新子网时执行地理数据库行为（例如，属性规则、编辑者追踪等），并更新所有适用要素和对象的子网名称和传播值。</para>
            /// </summary>
            [Description("With eventing")]
            [GPEnumValue("WITH_EVENTING")]
            _WITH_EVENTING,

        }

        /// <summary>
        /// <para>Edit Mode For Named Version</para>
        /// <para><xdoc>
        ///   <para>Specifies the edit mode for subnetwork updates on a named version.</para>
        ///   <bulletList>
        ///     <bullet_item>Without eventing—Eventing will not be used for subnetwork updates on named versions. This edit mode updates the subnetwork name and propagated values in place for features and objects edited in the version. This is the default.</bullet_item><para/>
        ///     <bullet_item>With eventing—Eventing will be used for subnetwork updates on named versions. This edit mode executes geodatabase behavior (for example, attribute rules, editor tracking, and so on) when the subnetwork is updated and updates the subnetwork name and propagated values for all applicable features and objects.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter requires Utility Network Version 4 or later and is only applicable to enterprise geodatabases.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定命名版本上子网更新的编辑模式。</para>
        ///   <bulletList>
        ///     <bullet_item>无事件 - 事件不会用于命名版本的子网更新。此编辑模式将更新版本中编辑的要素和对象的子网名称和传播值。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>使用事件 - 事件将用于命名版本的子网更新。此编辑模式将在更新子网时执行地理数据库行为（例如，属性规则、编辑者追踪等），并更新所有适用要素和对象的子网名称和传播值。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本，并且仅适用于企业级地理数据库。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Edit Mode For Named Version")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _edit_mode_for_named_version_value _edit_mode_for_named_version { get; set; } = _edit_mode_for_named_version_value._WITHOUT_EVENTING;

        public enum _edit_mode_for_named_version_value
        {
            /// <summary>
            /// <para>Without eventing</para>
            /// <para>Without eventing—Eventing will not be used for subnetwork updates on named versions. This edit mode updates the subnetwork name and propagated values in place for features and objects edited in the version. This is the default.</para>
            /// <para>无事件 - 事件不会用于命名版本的子网更新。此编辑模式将更新版本中编辑的要素和对象的子网名称和传播值。这是默认设置。</para>
            /// </summary>
            [Description("Without eventing")]
            [GPEnumValue("WITHOUT_EVENTING")]
            _WITHOUT_EVENTING,

            /// <summary>
            /// <para>With eventing</para>
            /// <para>With eventing—Eventing will be used for subnetwork updates on named versions. This edit mode executes geodatabase behavior (for example, attribute rules, editor tracking, and so on) when the subnetwork is updated and updates the subnetwork name and propagated values for all applicable features and objects.</para>
            /// <para>使用事件 - 事件将用于命名版本的子网更新。此编辑模式将在更新子网时执行地理数据库行为（例如，属性规则、编辑者追踪等），并更新所有适用要素和对象的子网名称和传播值。</para>
            /// </summary>
            [Description("With eventing")]
            [GPEnumValue("WITH_EVENTING")]
            _WITH_EVENTING,

        }

        /// <summary>
        /// <para>Valid Junctions</para>
        /// <para><xdoc>
        ///   <para>The asset group/asset type pairs identified as valid junctions for the subnetwork.</para>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>标识为子网有效交汇点的资产组/资产类型对。</para>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Junctions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_junctions { get; set; } = null;


        /// <summary>
        /// <para>Valid Junction Objects</para>
        /// <para><xdoc>
        ///   <para>The asset group/asset type pairs identified as valid junction objects for the subnetwork.</para>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>标识为子网的有效交汇点对象的资产组/资产类型对。</para>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Junction Objects")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_junction_objects { get; set; } = null;


        /// <summary>
        /// <para>Valid Junction Object Subnetwork Controllers</para>
        /// <para><xdoc>
        ///   <para>The asset group/asset type pairs identified as valid junction object subnetwork controllers for the subnetwork.</para>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>标识为子网的有效交汇点对象子网控制器的资产组/资产类型对。</para>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Junction Object Subnetwork Controllers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_junction_object_subnetwork_controller { get; set; } = null;


        /// <summary>
        /// <para>Valid Edge Objects</para>
        /// <para><xdoc>
        ///   <para>The asset group/asset type pairs identified as valid edge objects for the subnetwork.</para>
        ///   <para>This parameter requires Utility Network Version 4 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>标识为子网有效边对象的资产组/资产类型对。</para>
        ///   <para>此参数需要公共设施网络版本 4 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Valid Edge Objects")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _valid_edge_objects { get; set; } = null;


        /// <summary>
        /// <para>Manage IsDirty</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the Is dirty attribute in the subnetworks table will be managed by the update subnetwork operation.
        ///   <bulletList>
        ///     <bullet_item>Checked—The Is dirty attribute will be managed by the update subnetwork operation. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The Is dirty attribute will not be managed by the update subnetwork operation.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 5 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定子网表中的“脏”属性是否由更新子网操作管理。
        ///   <bulletList>
        ///     <bullet_item>选中 - Is dirty 属性将由更新子网操作管理。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 更新子网操作不会管理脏属性。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 5 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Manage IsDirty")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _manage_subnetwork_isdirty_value _manage_subnetwork_isdirty { get; set; } = _manage_subnetwork_isdirty_value._true;

        public enum _manage_subnetwork_isdirty_value
        {
            /// <summary>
            /// <para>MANAGE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("MANAGE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NOT_MANAGE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NOT_MANAGE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Containers</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the container features and objects will be included in the trace results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Container features and objects will be included in the trace results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Container features and objects will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 5 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定容器功能和对象是否将包含在跟踪结果中。
        ///   <bulletList>
        ///     <bullet_item>选中 - 容器要素和对象将包含在追踪结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括容器要素和对象。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 5 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Containers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_containers_value _include_containers { get; set; } = _include_containers_value._true;

        public enum _include_containers_value
        {
            /// <summary>
            /// <para>INCLUDE_CONTAINERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_CONTAINERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_CONTAINERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_CONTAINERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Content</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the trace will return content of containers in the results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Content of container features and objects will be included in the trace results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Content of container features and objects will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 5 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定跟踪是否返回结果中容器的内容。
        ///   <bulletList>
        ///     <bullet_item>选中 - 容器要素和对象的内容将包含在追踪结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括容器要素和对象的内容。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 5 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Content")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_content_value _include_content { get; set; } = _include_content_value._true;

        public enum _include_content_value
        {
            /// <summary>
            /// <para>INCLUDE_CONTENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_CONTENT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_CONTENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_CONTENT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Structures</para>
        /// <para><xdoc>
        ///   <para>Specifies whether structure features and objects will be included in the trace results.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked—Structure features and objects will be included in the trace results.</bullet_item><para/>
        ///       <bullet_item>Unchecked—Structure features and objects will not be included in the trace results. This is the default.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 5 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否将结构特征和对象包含在跟踪结果中。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>选中 - 结构特征和对象将包含在追踪结果中。</bullet_item><para/>
        ///       <bullet_item>未选中 - 追踪结果中不会包括结构特征和对象。这是默认设置。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 5 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Structures")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_structures_value _include_structures { get; set; } = _include_structures_value._true;

        public enum _include_structures_value
        {
            /// <summary>
            /// <para>INCLUDE_STRUCTURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_STRUCTURES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_STRUCTURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_STRUCTURES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Validate Locatability</para>
        /// <para><xdoc>
        ///   <para>Specifies whether an error will be returned during a trace or update subnetwork operation if nonspatial junction or edge objects are encountered without the necessary containment, attachment, or connectivity association in their association hierarchy of the traversed objects. This parameter ensures that nonspatial objects returned by a trace or update subnetwork operation can be located through an association with features or other locatable objects.
        ///   <bulletList>
        ///     <bullet_item>Checked—An error will be returned if nonspatial junction or edge objects are encountered without the necessary containment, attachment, or connectivity association in their association hierarchy of the traversed objects.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The trace will not check for unlocatable objects and will return results regardless of whether unlocatable objects are present in the association hierarchy of the traversed objects. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>This parameter requires Utility Network Version 5 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定如果遇到非空间交汇点或边对象，而在遍历对象的关联层次结构中没有必要的包含、附件或连通性关联的情况下，是否在追踪或更新子网操作期间返回错误。此参数可确保追踪或更新子网操作返回的非空间对象可以通过与要素或其他可定位对象的关联进行定位。
        ///   <bulletList>
        ///     <bullet_item>选中 - 如果遇到非空间交汇点或边对象，而在其遍历对象的关联层次结构中未进行必要的包含、连接或连通性关联，则将返回错误。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪将不检查不可定位对象，并且无论遍历对象的关联层次结构中是否存在不可定位对象，都将返回结果。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>此参数需要公共设施网络版本 5 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Validate Locatability")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _validate_locatability_value _validate_locatability { get; set; } = _validate_locatability_value._false;

        public enum _validate_locatability_value
        {
            /// <summary>
            /// <para>VALIDATE_LOCATABILITY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("VALIDATE_LOCATABILITY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_VALIDATE_LOCATABILITY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_VALIDATE_LOCATABILITY")]
            [GPEnumValue("false")]
            _false,

        }

        public SetSubnetworkDefinition SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}